Video on demand (VoD) streaming systems allow users to receive and watch video content over a network. The state of the art presently includes the peer-to-peer media streaming systems that support only live-streaming. The state of the art also includes systems that only support sequential VoD streaming, such as “P2Cast” and “P2VoD.” That is, users that join the system can watch the content only from the beginning, i.e., starting at timeline position 0 (zero). A system such as P2VoD may presume that every peer has the same buffer size and restrict peers to a limited use of a portion of their buffers in order to keep consistency among peers of the same generation. A system such as P2Cast relies on each peer to have sufficient size of storage and requires every peer pre-fetch future portions of the video using a multicast channel. Accordingly, prospective peers having unacceptably restrictive or limited buffer capacity may be unable to join a P2Cast system. For prospective peers, as clients, able to cache 10% of a stream's video length, P2Cast systems purport to be scalable and accommodating of such prospective peers. In P2VoD and P2Cast systems, peers that join early in relation to the start of a video stream, i.e., old peers of an earlier session, are not able to contribute their uplink capacity to the system. For example, in P2VoD systems, peers belonging to a session are not accessible from peers belonging to other sessions. As for P2Cast systems, peers that no longer have the first portion of the video are not able to support peers that newly join the system. In both these systems and exemplary instances, peers are precluded from contributing their excess available uplink capacity and their excess storage capacity to the system.
The state of the art also presently includes systems that support non-sequential access, such as “oStream.” A system such as oStream has the system basing its search for a video supplier to be associated with a requesting peer based on predictions the system itself makes as to viewing duration for each requesting peer. An oStream system design may be scalable if each relaying node in the multicast tree is allowed to buffer on the order of 10% of the media stream.